var value = [1, 2, 3]
console.log(value instanceof Array) // true
console.log(value instanceof Object) // true
// 因为instanceof检测对象类型时，仅仅适用于引用类型，并且instanceof Object永远为true,辨别度
// 较低
var isArray = Array.isArray(value)
console.log('isArray', isArray) // true
// 数组的valueOf返回数组的本身
console.log('valueOf', value.valueOf()) // [1, 2, 3]
// 数组的toString()方法先将数组内元素转化为字符串（调用每一项的toString()方法），
// 最后再将字符串用逗号连接起来
console.log('toString', value.toString()) // "1,2,3"
// toLocaleString()也类似，只不过转换过程中，每个元素调用的时toLocalString()方法
var person1 = {
  toString: function () {
    return 'toString-1'
  },
  toLocaleString: function () {
    return 'toLocalString-1'
  }
}
var person2 = {
  toString: function () {
    return 'toString-2'
  },
  toLocaleString: function () {
    return 'toLocalString-2'
  }
}
var arr = [person1, person2]
console.log(arr.toLocaleString()) // toLocalString-1,toLocalString-2
console.log(arr.toString()) // toString-1,toString-2

// toString时候的分隔符 join()
console.log(value.toString()) // 1, 2, 3 相当于给join传递了一个空的参数
console.log(value.join('#'))  // 1#2#3